The C, C++, Objective-C, and Objective-C++ versions of the compiler are integrated; the GNU C compiler can compile programs written in C, C++, or Objective-C. Source code for any of these languages can be ASCII text or Rich Text Format; the preprocessor strips out all RTF directives, leaving only ASCII text for the compiler itself.
"GCC" is a common shorthand term for the GNU C compiler. This is both the most general name for the compiler, and the name used when the emphasis is on compiling C programs.
When referring to C++ compilation, the compiler is occasionally referred to as "G++". Since there is only one compiler, it is also accurate to call it "GCC" no matter what the language context.
We use the name "GNU CC" to refer to the compilation system as a whole, and more specifically to the language-independent part of the compiler. For example, we refer to the optimization options as affecting the behavior of "GNU CC" or sometimes just "the compiler".
G++ is a compiler , not merely a preprocessor. G++ builds object code directly from your C++ program source. There is no intermediate C version of the program. (By contrast, for example, some other implementations use a program that generates a C program from your C++ source.) Avoiding an intermediate C representation of the program means that you get better object code, and better debugging information. The GNU debugger, GDB, works with this information in the object code to give you comprehensive C++ source-level editing capabilities. See The GNU Source-Level Debugger for more information.
Mac OS X includes two preprocessors: the standard GNU C preprocessor ( cpp ) and the precompilation preprocessor ( cpp-precomp ). The two preprocessors are largely similar, except for some rarely used extensions. The precompilation preprocessor( cpp-precomp ) is the default preprocessor for C and Objective-C code. (See /System/Documentation/Developer/DeveloperTools/Preprocessor/ for more information. ) The standard preprocessor ( cpp ) is the default preprocessor for Objective-C++ code. To switch to the standard preprocessor ( cpp ) on platforms on which precompiled headers are available, use the -traditonal-cpp flag on the cpp command line.